package com.hsgene.medicine.service;

import com.hsgene.common.util.result.ApiResult;
import com.hsgene.common.util.support.Pagination;
import com.hsgene.medicine.condition.GeneticMedicineCondition;
import com.hsgene.medicine.domain.GeneticCancerMedicine;
import com.hsgene.medicine.dto.DaCancerDto;
import com.hsgene.medicine.dto.GeneticCancerMedicineDto;
import com.hsgene.medicine.dto.GeneticMedicineDto;

import java.util.List;

/**
 * @desc: 药物管理service
 * @author: 江承良
 * @date: 2018/8/15 10:02
 */
public interface MedicineService {

    /**
     * 获取知识库药物列表
     *
     * @param query  搜索条件
     * @param page   页码
     * @param offset 每页显示数量
     * @return 列表数据信息
     */
    ApiResult drugPage(String query, Integer page, Integer offset);

    /**
     * 添加基因检测药物
     *
     * @param medicineDto 药物信息
     * @return
     */
    ApiResult insertGeneticMedicine(GeneticMedicineDto medicineDto);

    /**
     * 基因检测药物列表
     *
     * @param geneticMedicineCondition 查询条件
     * @return 列表信息
     */
    ApiResult<Pagination<GeneticMedicineDto>> geneticMedicinePage(GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 根据id获取基因检测药物信息
     *
     * @param id 基因检测药物id
     * @return 基因检测药物信息
     */
    ApiResult<GeneticMedicineDto> geneticMedicineById(String id);

    /**
     * 修改基因检测药物
     *
     * @param geneticMedicineDto 基因检测药物信息
     * @return
     */
    ApiResult updateGeneticMedicine(GeneticMedicineDto geneticMedicineDto);

    /**
     * 删除基因检测药物信息
     *
     * @param id 基因检测药物id
     * @return
     */
    ApiResult deleteGeneticMedicine(String id);

    /**
     * 获取所有的基因检测药物
     *
     * @return
     */
    ApiResult<List<GeneticMedicineDto>> geneticMedicineDtos();

    /**
     * 添加癌症药物信息
     *
     * @param geneticCancerMedicine 数据信息
     * @return
     */
    ApiResult insertGeneticCancerMedicine(GeneticCancerMedicine geneticCancerMedicine);

    /**
     * 癌症药物列表
     *
     * @param geneticMedicineCondition 查询条件
     * @return 列表信息
     */
    ApiResult<Pagination<GeneticCancerMedicineDto>> cancerMedicinePage(GeneticMedicineCondition geneticMedicineCondition);

    /**
     * 根据id获取信息
     *
     * @param id id
     * @return 数据信息
     */
    ApiResult<GeneticCancerMedicineDto> cancerMedicineById(String id);

    /**
     * 删除癌症药物
     *
     * @param id id
     * @return
     */
    ApiResult deleteCancerMedicine(String id);

    /**
     * 更新癌症药物信息
     *
     * @param geneticCancerMedicine
     * @return
     */
    ApiResult updateCancerMedicine(GeneticCancerMedicine geneticCancerMedicine);

    /**
     * 根据父级id查询疾病信息
     *
     * @param parentId 父级id
     * @return 疾病信息
     */
    ApiResult<List<DaCancerDto>> cancerInfoByParentId(String parentId);

    /**
     * 获取全部的癌症疾病
     * @return
     */
    ApiResult<List<GeneticCancerMedicineDto>> cancerMedicineAll();

    /**
     * 基因检测药物列表（花生仁）
     * @return
     */
    ApiResult peanutDrugs();

    /***
     * 根据id获取疾病
     * @author jcl
     * @date 2018/10/26 14:18
     * @param cancerId 疾病id
     * @return
     */
    ApiResult cancerById(String cancerId);
}
